<?php
namespace app\api\controller;

use app\admin\model\Products;
use app\api\controller\BaseClientController;
use support\Request;

class ProductController extends BaseClientController
{
    public $noNeedLogin = ['index', 'listPage'];

    /**
     * 分页查询商品列表
     *
     * 该方法用于根据分类 ID 对商品进行分页查询。
     * 支持通过请求参数指定页码、每页数量和分类 ID。
     *
     * @param Request $request 请求对象，包含客户端发送的请求信息
     * @return mixed 返回包含商品列表和总数量的成功响应
     */
    public function index(Request $request)
    {
        // 从请求中获取页码参数，默认为第 1 页
        $pageNum = $request->get('pageNum', 1);
        // 从请求中获取每页显示的商品数量，默认为 10 条
        $pageSize = $request->get('pageSize', 10);

        // 从请求中获取商品分类 ID，默认为 0（表示不筛选分类）
        $categoryId = $request->get('categoryId', 0);
        // 初始化查询条件数组
        $condition = [];
        // 若分类 ID 不为 0，则添加分类筛选条件
        if ($categoryId) {
            $condition[] = ['category_id', '=', $categoryId];
        }

        // 使用 Products 模型进行分页查询，传入查询条件、页码和每页数量
        $paginator = Products::paginate([
            'where'     => $condition,
            'page'      => $pageNum,
            'list_rows' => $pageSize,
        ]);

        // 从分页对象中获取当前页的商品列表
        $list = $paginator->items();
        // 从分页对象中获取商品的总数量
        $total = $paginator->total();

        // 返回包含商品列表和总数量的成功响应
        return $this->success([
            'list'  => $list,
            'total' => $total,
        ]);
    }
}
